package structure.sort;

/**
 * 冒泡排序
 */
public class Sort {

    /**
     * 冒泡排序：比较两个相邻的元素，将最小的值换到左端
     * @param array
     */
    public static void bubbleSort(int[] array){
        int len = array.length;

        for(int i = 0; i < len; i++){
            for(int j = i + 1; j < len; j++){
                if(array[i] > array[j]){
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }

    }


    /**
     * 选择排序：每一次从待排序的数据元素中选出最小（或最大）的一个元素，
     * 存放在序列的起始位置，直到全部待排序的数据元素排完
     * @param array
     */
    public static void selectionSort(int[] array){
        int len = array.length;

        for(int i = 0; i < len; i++){
            int min = i;

            for(int j = i + 1; j < len; j++){
                if(array[min] > array[j]){
                    min = j;
                }
            }

            if(min != i){
                int temp = array[i];
                array[i] = array[min];
                array[min] = temp;
            }
        }

    }

    public static void main(String[] args) {
        int[] array = new int[]{4,6,72,23,5,7,99};

//        bubbleSort(array);
        selectionSort(array);

        for (int i : array) {
            System.out.println(i);
        }
    }
}
